課程資訊
課程名稱
程式語言
Programming Languages 
開課學期
99-2 
授課對象
管理學院  資訊管理學系  
授課教師
穆信成 
課號
IM3002 
課程識別碼
705 20100 
班次
 
學分
全/半年
半年 
必/選修
必修 
上課時間
星期三6,7,8(13:20~16:20) 
上課地點
管一B01 
備註
本課程中文授課,使用英文教科書。
總人數上限:70人 
 
課程簡介影片
 
核心能力關聯
核心能力與課程規劃關聯圖
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

- 程式語言是一種形式語言,作為思考的工具。我們用程式語言表達概念,也用程式語
言中的形式規則檢驗程式的正確性。領域不同、目的不同,適合的程式語言也不同。
一個語言如果不改變你的思考方式,就不值得學 (Alan Peris)。

- 只要定義出資料型態,很多程式都可用歸納法寫出。

- 好的型別系統常有只要型別對,程式就會對的特性。

- 型別系統與邏輯有密切關係。計算科學的發展也和數學/邏輯學界的潮流息息相關。

- 有良好性質的語言可用數學推衍確保正確性,甚至可以從 specification 把
程式「算」出來。

- 許多程式語言的特性,如傳值方式、變數範疇、lazy/eager evaluation 等等
的「意義」(語意)都可用數學方式描述。

- 如 C 之類的 imperative 語言之程式的正確性也可以證明。寫一個 imperative
程式的關鍵是迴圈不變量。
 

課程目標
瞭解程式語言在語法、語意、與實務面向的課題。熟悉數種程式設計典範,
作為日後輔助思維與規劃的公據。 
課程要求
已修過一門程式設計課程
 
預期每週課後學習時數
 
Office Hours
 
指定閱讀
Programming Languages: Application and Interpretation, by
Shriram Krishnamurthi.

Freely available online at:
http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/

 
參考書目
Programming in Haskell, by Graham Hutton.
Cambridge University Press, 2007

Introduction to Functional Programming using Haskell (2nd Edition), by Richard Bird.
Prentice Hall 1998

 
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
期中考 
50% 
 
2. 
期末考 
50% 
 
 
課程進度
週次
日期
單元主題
第1週
2/23  Introduction
 
第2週
3/02  Haskell/Helium: functions,
inductive definitions on lists,
finite and infinite lists.

 
第3週
3/09  Haskell/Helium: equational reasoning
polymorphic type system, 
第4週
3/16  Haskell/Helium: algebraic datatype
 
第5週
3/23  Interpreter/Semantics:
a simple language with expressions,
extended with variables,
extended with "let".

 
第6週
3/30  Interpreter/Semantics:
a language with functions
lexical scope vs dynamic scope, closure.
a language with more datatypes,
lazy vs eager evaluation.

 
第7週
4/06  Interpreter/Semantics:
a language with states.

 
第8週
4/13  Logic and Computability

 
第9週
4/20  Mid-Term Exam

 
第10週
4/27  IO and Concurrency in Haskell
 
第11週
5/04  Imperative programming and Hoare logic:
Hoare logic, backwards reasoning
Loop construction
 
第12週
5/11  Imperative programming and Hoare logic:
Basic predicate calculus, and its application
 
第13週
5/18  Imperative programming and Hoare logic:
More Examples on Loop Construction
 
第14週
5/25  Objects and Object Orientation

 
第15週
6/01  Concurrency: process algebras
 
第16週
6/08  Logic programming
 
第17週
6/15  Advanced Topics
 
第18週
6/22  Final Exam